#ifndef COMPLEX_HPP
#define COMPLEX_HPP

class Complex{
	// Закрытая часть 	
	double re, im; // Свойства
public:
	// Конструкторы
	Complex(); // Конструктор по умолчанию
	Complex(double _re); // Конструктор преобразования
	Complex(double _re, double _im);
	Complex(const Complex &Z);// Конструктор копирования

	// Константные методы
	double real()   const;
	double imag()   const; 
	double modulo() const;
	double angle()  const;
	
	// Переопределение оператора присваивания
	const Complex& operator=(const Complex &rhs);
	
	friend Complex operator+(const Complex &lhs, const Complex &rhs);
	friend Complex operator-(const Complex &lhs, const Complex &rhs);
	friend Complex operator*(const Complex &lhs, const Complex &rhs);
	friend Complex operator/(const Complex &lhs, const Complex &rhs);

	friend bool operator==(const Complex &lhs, const Complex &rhs);
};

bool operator!=(const Complex &lhs, const Complex &rhs);
void print(const Complex &z);

#endif
